草庐IT

Android 和 RESTful 服务

全部标签

go - 我应该用 go run 运行服务器吗?或 ./main 有什么区别?

我有一个go服务器,我通常这样运行:开始构建。&&./main但是在网上我看到很多使用gorun的例子。哪个更好用,有什么区别? 最佳答案 来自官方文档(go1.11):gorun-编译并运行指定的主Go包。gobuild-编译由导入路径命名的包,连同它们的依赖项,但它不会安装结果。goinstall-编译并安装由导入路径命名的包。意思是:通常对于LOCAL环境,可以使用gorun,但对于PROD环境,最好使用gobuild构建您的应用并运行./main,但是如果你需要Go工具链,你必须使用goinstall因为它会安装包和依赖项并

git - 使用 Docker 在生产中部署 Go 服务

我正在使用Docker开发Go服务,并认为在编译时要在生产中部署代码,我只需要dockercompose和在我的注册表上发布的Docker镜像。因为我来自PHP世界,所以我习惯于克隆我的整个项目来部署它。有什么方法可以仅使用docker-compose文件部署我的项目?我在thispost上看到了我只能gitclone一个文件,但感觉这不是一个好方法,用Docker部署Go微服务的最佳实践是什么? 最佳答案 您的问题中有两个不同的问题,我不确定您要寻找哪个问题的答案。Q1:为我的Go项目创建Dockerfile的好方法是什么A1:看

http - 无需重置路由的最小 http 服务测试?

假设我有一个非常简单的Web服务。funcmain(){http.HandleFunc("/",sanityTest)log.Fatal(http.ListenAndServe(":8000",nil))}如果我想测试它,我至少可以拥有:funcExampleTest(){server:=httptest.NewServer(http.DefaultServeMux)deferserver.Close()resp,err:=http.Get(server.URL)iferr!=nil{log.Fatal(err)}body,_:=ioutil.ReadAll(resp.Body)fmt

rest - 如何在 Go 中为允许单元测试的休息服务设置 Mongo DB?

我正在使用MongoDB和mux路由器在go中设置休息服务。我遇到了关于如何最好地设置它以允许在单独的数据库中进行单元/集成测试的问题。我已经尝试在Init()函数中设置数据库,但是在尝试使用测试数据库设置单元测试时这给我带来了问题。以下是我现在所处位置的一些示例。我正在尝试使用一种方法在发布之前连接到数据库,因此在我的测试中我可以连接到不同的测试数据库。typeuserstruct{namestring`json:"name"`ageint`json:"age"`}typedatabasestruct{db*mongo.Database}funcConnectToDB()(*data

json - 使用 golang 从 http 网络服务器中提取特定的和最新的数据

我正在尝试制作一个简单的区block链并将数据存储到基于本教程的网络服务器https://github.com/mycoralhealth/blockchain-tutorial/tree/master/proof-work.我想通过使用获取请求获取最新值,但只有特定数据而不是所有数据,例如只有PrevHash和数据。我试过这段代码向服务器发送获取请求。packagemainimport("net/http""log""io/ioutil""fmt""encoding/json")funcmain(){MakeRequest()}funcMakeRequest(){resp,err:=

go - 如何执行 CloudKit 服务器到服务器的身份验证

我正在关注ComposingWebServiceRequests执行DiscoveringAllUserIdentities(GETusers/discover).我们的想法是让这个简单的请求正常工作,然后再发出更复杂的请求,例如上传Assets。下面的代码从请求中返回一个错误。import("bytes""crypto/ecdsa""crypto/rand""crypto/sha256""crypto/x509""encoding/base64""encoding/pem""fmt""math/big""net/http""time"//...)funcmain(){fmt.Prin

Go Web 服务 - 未定义的类型没有字段或方法

这个问题在这里已经有了答案:Functioninsamepackageundefined(10个答案)关闭8个月前。我正在尝试在Web服务中整合路由功能。包main有两个值得关注的文件,route.go和main.go。在route.go中,我定义路由如下:packagemainimport("github.com/justinas/alice""net/http")func(app*Application)Routes()http.Handler{standardMiddleware:=alice.New(app.logRequest)mux:=http.NewServeMux()m

go - 在 Go 中创建多个 http 服务器实例不起作用

我正在尝试在我的golang应用程序中创建2个HTTP服务器,这就是我尝试实现它的方式:packagemainimport("net/http")funcmain(){server:=http.Server{Addr:":9000",//Handler:http.HandleFunc("/",hello)}server.ListenAndServe()server2:=http.Server{Addr:":8000",//Handler:http.HandleFunc("/",hello)}server2.ListenAndServe()}我遇到的问题是,当我转到浏览器向http://

go - go库中的http服务器是非阻塞的吗?

我想要一个非阻塞的http服务器,用于我的go项目的restful端点。包含在go库中的服务器可以解决问题吗? 最佳答案 Gohttp包是并发的,而不是node.js意义上的非阻塞。这意味着请求处理程序即使执行阻塞操作也不会延迟其他请求的处理。正如DaveC所说,它为每个请求创建一个新的goroutine。实际上,这意味着您可以获得非阻塞服务器的好处,而无需担心您编写的代码是否阻塞。 关于go-go库中的http服务器是非阻塞的吗?,我们在StackOverflow上找到一个类似的问题:

amazon-web-services - 在 AWS 上托管时无法访问 Go 服务器

我已经使用gin在Go中创建了一个项目,它在本地运行良好。但是,当我尝试在AWS上的EC2实例上部署它时,我无法访问服务器上的API。我对托管机器执行了ssh并发出了curl请求(curllocalhost:8080),它给出了正确的响应。但是来自外部的任何请求都无法访问。服务器在端口8080上运行。我已经在AWS安全组中打开了这些端口。我需要在Go/gin中进行任何设置才能从互联网访问它吗?示例代码:packagemainimport("myConstants""myDatabase""myMiddleware""onboarding""github.com/gin-gonic/gi